The shaders subdirectory of the library contains a set of  GLSL  shaders
that are intended to be used in  iStripper  scenes  to  perform  various
effects. They have not been designed for any specific scenes but provide
generaly useful effects.  In  order  to provide flexibility they are all
controlled via a number of GLSL uniform variables that can  be  assigned
values in an iStripper scene description file.

Currently the following shaders are provided

  TheEmuLib.Colouring/TheEmuLib.Emu_Adjust_RGBA_BC.fsh

     Adjusts the brightness and contrast of an image.

  TheEmuLib.Colouring/TheEmuLib.Emu_Clamp_RGBA.fsh

     Restricts the ranges of the colour and opacitities of
     pixels in an image.

     Originaly written because when using combinations of
     shaders the R, G, B and A components could go out of
     their normal range of 0.0 to 1.0 which could then
     adversely affect the final image.

     May be used to enforce the normal range for colour
     and opacity components.

     May be used to restrict the range of one or more
     colour components, e.g. to fix the red component
     to have a value of 0.25 or to limit the opacity.

  TheEmuLib.Colouring/TheEmuLib.Emu_Quantise_RGBA.A.fsh

     Reduces the variation in the colour components for an
     image by mapping them to small number of levels, i.e.
     posterises an image.

  TheEmuLib.Colouring/TheEmuLib.Emu_Remix_RGBA.A.fsh
  TheEmuLib.Colouring/TheEmuLib.Emu_Remix_RGBA.B.fsh

     Modifies the colours of an image by remixing the red,
     green, blue and alpha components of each pixel.

  TheEmuLib.Fiters/TheEmuLib.Emu_Blur.NxN.fsh
  TheEmuLib.Fiters/TheEmuLib.Emu_Emboss.NxN.fsh
  TheEmuLib.Fiters/TheEmuLib.Emu_Sharpen.NxN.fsh

     Apply a simple blur,  emboss  or sharpen convolutional
     filter to an image.  Several  varients  of each shader
     using different filters are provided.

     Control parameters allow some details of the operation
     to be controlled from the scene file.

     Some settings of the control parameters will introduce
     a degree of regular texturing into the filtered image.

  TheEmuLib.Filters/TheEmuLib.Emu_Pixelate.NxN.fsh

     Modified versions of the blur filter that pixilate an
     image rather than smoothly blurring it.


  TheEmuLib.Misc/TheEmuLib.Emu_Grid_RA.fsh
  TheEmuLib.Misc/TheEmuLib.Emu_Grid_XY.fsh

     Generates regular 2D grids.  These grids are intended
     to be used as an aid when positioning scene elements,
     i.e. as a scene development aid rather than a part of
     the final scene.

  TheEmuLib.Misc/TheEmuLib.Emu_Null.fsh

     Does nothing, but is useful when a shader has to be
     used but no image change is required.

  TheEmuLib.Misc/TheEmuLib.Emu_Shadow_A.fsh
  TheEmuLib.Misc/TheEmuLib.Emu_Shadow_B.fsh

     Generate shadows. Combines shear and taper transforms
     with a blur filter.

  TheEmuLib.Misc/TheEmuLib.Emu_Rectangle.fsh

    Originaly this shader extracted a rectangular area from
    a larger source image but this has been generalised  to
    modifying an image by changing the opacities inside and
    outside the rectangle to any arbitrary values, not just
    0.0 and 1.0

    Optionaly allows a border around the region in which the
    opacities change smoothly from that used for the  inside
    of the rectangle to that used outside.

    May be used to extract rectangular areas from an image.
    May be used to implement vignetting.

  TheEmuLib.Misc/TheEmuLib.Emu_Shear_XY.fsh
  TheEmuLib.Misc/TheEmuLib.Emu_Taper_XY.fsh
  TheEmuLib.Misc/TheEmuLib.Emu_TaShe_XY.fsh

     Apply Shear, Taper or both Shear and Taper  transforms
     to an image,  with optional scaling as that will often
     be required when using these transforms.

     A Shear transform progressively slides the constituant
     points of an image parallel to an axis by amounts that
     are proportional to their distances from that axis.  A
     shear transforms a rectangle into a parallelogram.

     A Taper transform progressively shrinks or expands the
     width of a image perpendicular to an axis by an amount
     that is proportional to its distance along that  axis.
     taper transforms a rectangle into a trapezoid if it is
     applied parallel to an edge or, more generaly,  into a
     kite shape.

     The Emu_TaShe_XY.fsh shader combines taper and shear to
     perform a general perpective transformation but without
     rotation.

  TheEmuLib.Misc/TheEmuLib.Emu_Tile_RA.1.fsh
  TheEmuLib.Misc/TheEmuLib.Emu_Tile_XY.1.fsh
  TheEmuLib.Misc/TheEmuLib.Emu_Tile_XY.2.fsh

     Tile an area with repetitions of an image.

  TheEmuLib.Ripples/TheEmuLib.Emu_Ripple_XY.fsh
  TheEmuLib.Ripples/TheEmuLib.Emu_Ripple_RA.fsh

    Cause the image to ripple in either the X and Y directions
    or in the polar R (radial) and A (angle) directions.

    The effect can optionaly be confined to a section of the
    image either by a discontinuity or by smoothly  reducing
    the ripple to zero near the edge of the region.

    May be used to cause images to ripple, to pulsate or  to
    suffer more extreme dynamic distortions.

    Static ripples can be obtained by setting the  frequency
    to zero. these can be used to mimic bending a surface.

  TheEmuLib.Ripples/TheEmuLib.Emu_Ripple_RGBA_XY.fsh
  TheEmuLib.Ripples/TheEmuLib.Emu_Ripple_RGBA_RA.fsh

     Ripples the colour and opacities of an image. Similar
     to the Ripple_XY and Ripple_RA shaders but operating
     in colour space.

     May be used to cause waves of colour to pass across
     an image or to produce more complex colour variations.

     May be used to cause waves of transparancy to pass
     across an image allowing a second to show through.

  TheEmuLib.Tentering/TheEmuLib.Emu_Tenter_XY.nn.fsh   (nn is two digits)
  TheEmuLib.Tentering/TheEmuLib.Emu_Tenter_XY.Xnn.fsh
  TheEmuLib.Tentering/TheEmuLib.Emu_Tenter_XY.Ynn.fsh

     These shaders all apply the same "tentering" operation
     to a source image.  They  differ only in the number of
     tenterhooks that they support and to which edges  that 
     they can be attached.  This  allows the GPU processing
     power to be minimised by using  the  smallest  version
     able to support the number placement required for  any
     particular tentering effect. Because there are so many
     of these shaders they are kept in  a  subdirectory  of
     the library's main shader directory but if, as will be
     normal, you only want to use one or two then there  is
     no reason to duplicate this subdirectory when you copy
     those that you are using.

     Historicaly tentering was the operation of  stretching 
     a fabric or animal skin using tenterhooks and cords to
     attach it to a tentering frame.  These shaders distort 
     an image in a similar way by pulling on it at a set of
     points arranged along its edges.

     Currently the pulls must all be in pairs operating  on
     points directly opposite each other and they can  only
     be applied in directions perpendicular to the edges to
     which they are attached.  Positive  pull displacements
     produce "peaks" sticking out of the image and negative
     displacements produce indentations.

     By default the new edges will be straight producing an
     angular polygon,  but options are is provided to curve
     the edges in various ways.

     The shader may be used to distort an image in  several
     ways including fitting it into a regular or  irregular
     polygon or oval, or to mimic the bending or folding of
     a surface.